﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using DAL.DataSourceInterface;
using DAL.DataSourceImplementation;

namespace DAL
{
    public static class DataAccess
    {
        private static readonly string connName;

        static DataAccess()
        {
            connName = ConfigurationManager.ConnectionStrings["BD_PublicaTuPropiedad"].Name;
        }

        /// <summary>
        /// SE INSTANCIAN LAS INTERFACES Y SE RETORNA LA IMPLEMENTACION
        /// </summary>
        public static ICiudadDAO GetCiudadDAO
        {
            get { return new CiudadDAO(connName); }
        }

        public static IComunaDAO GetComunaDAO
        {
            get { return new ComunaDAO(connName); }
        }

        public static IEmpresaDAO GetEmpresaDAO
        {
            get { return new EmpresaDAO(connName); }
        }

        public static IPreguntasSecretasDAO GetPreguntasSecretasDAO
        {
            get { return new PreguntasSecretasDAO(connName); }
        }

        public static IRegionDAO GetRegionDAO
        {
            get { return new RegionDAO(connName); }
        }

        public static IRolDAO GetRolDAO
        {
            get { return new RolDAO(connName); }
        }

        public static IRolUsuarioDAO GetRolUsuarioDAO
        {
            get { return new RolUsuarioDAO(connName); }
        }

        public static ITipoPersonaDAO GetTipoPersonaDAO
        {
            get { return new TipoPersonaDAO(connName); }
        }

        public static IGeneroDAO GetGeneroDAO
        {
            get { return new GeneroDAO(connName); }
        }

        public static ITipoPropiedadDAO GetTipoPropiedadDAO
        {
            get { return new TipoPropiedadDAO(connName); }
        }

        public static IAccionPropiedadDAO GetAccionPropiedad
        {
            get { return new AccionPropiedadDAO(connName); }
        }

        public static IPropiedadDAO GetPropiedadDAO
        {
            get { return new PropiedadDAO(connName); }
        }

        public static ITerrenoDAO GetTerrenoDAO
        {
            get { return new TerrenoDAO(connName); }
        }

        public static IOficinaDAO GetOficinaDAO
        {
            get { return new OficinaDAO(connName); }
        }

        public static IDepartamentoDAO GetDepartamentoDAO
        {
            get { return new DepartamentoDao(connName); }
        }

        public static ICasaDAO GetCasaDAO
        {
            get { return new CasaDAO(connName); }
        }
    }
}
